//////////////////////////////////////////////////////////////////////////

#ifndef _SERVERSTATEPACKET_H_
#define _SERVERSTATEPACKET_H_

//////////////////////////////////////////////////////////////////////////

#ifndef _TIMEPACKET_H_
#include "timepacket.h"
#endif

#ifndef _SERVERSTATE_H_
#include "serverstate.h"
#endif

//////////////////////////////////////////////////////////////////////////


/** Network packet, that contains server state
*
*  @author   Roman Pasechnik
*  @since    Jun 04th, 2009
*  @updated  Nov 01th, 2009
*/
class ServerStatePacket : public TimePacket
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Constructor */
    ServerStatePacket( size_t _creationTime, const ServerState& _serverState );


////////////////////////////////////////////////////////////////////////////////


    /** Get server state */
    const ServerState& GetState() const;


////////////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////
//// Serializable interface implementation
//////////////////////////////////////////////////////////////////////////


    /** Accept saver, that serializes the object into buffer */
    virtual void AcceptSaver( Saver& _saver ) const;


//////////////////////////////////////////////////////////////////////////



    /** Server state */
    ServerState m_ServerState;


//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
